'''
Author: duliang thinktanker@163.com
Date: 2025-08-26 17:32:03
LastEditors: duliang thinktanker@163.com
LastEditTime: 2025-09-15 08:37:01
FilePath: \control-net\yolo\delete_emptytxt.py
Description: 
'''
import os

# 获取目录中的所有文件名（不含扩展名）
def get_filenames_without_extension(directory, extension):
    filenames = []
    for file in os.listdir(directory):
        if file.endswith(extension):
            filenames.append(os.path.splitext(file)[0])
    return set(filenames)

# 删除不匹配的文件
def delete_unmatched_files(images_dir, labels_dir):
    # 获取jpg文件名（不含扩展名）
    jpg_files = get_filenames_without_extension(images_dir, '.jpg')
    # 获取txt文件名（不含扩展名）
    txt_files = get_filenames_without_extension(labels_dir, '.txt')
    
    # 找出只在images目录中存在的文件
    unmatched_images = jpg_files - txt_files
    # 找出只在labels目录中存在的文件
    unmatched_labels = txt_files - jpg_files
    
    # 删除images目录中没有对应txt的jpg文件
    for filename in unmatched_images:
        file_path = os.path.join(images_dir, filename + '.jpg')
        if os.path.exists(file_path):
            print(f"删除: {file_path}")
            os.remove(file_path)
    
    # 删除labels目录中没有对应jpg的txt文件
    for filename in unmatched_labels:
        file_path = os.path.join(labels_dir, filename + '.txt')
        if os.path.exists(file_path):
            print(f"删除: {file_path}")
            os.remove(file_path)

# 主函数
if __name__ == "__main__":
    images_directory = r"D:\my_dataset_from_server\images"
    labels_directory = r"D:\my_dataset_from_server\labels"
    
    delete_unmatched_files(images_directory, labels_directory)

